FIT2-2021b 第05回 リスト
前回授業課題の解説
https://gyazo.com/b5aa90f600705b48df17c454ee3f5c5a
b-9-2.py 完成形のDemo
https://gyazo.com/ea4cccfbc2b4f94a85316eee716b9746
要点
vx, vy, speed
padとボールの接触判定
padxの描画方式について
https://gyazo.com/ca0cbec7b633f534a610cb26ae623203
pyxel.rectの引数は「左上のx座標, 左上のy座標, 幅, 高さ, 色」
なので接触判定は
「ballのy」が「195以上200以下」であること
「ballのx」が「padx - 20 〜 padx + 20」以内であり
の論理積となる
FYI: ボールは中心座標のため、厳密に「接触」を定義するにはは半径を足した接触判定を行うべきだが複雑化するため割愛している
改善:ゲームの仕様を素直にコードに落とす
code:python
# 動くが、要改善パターン
if bally >= 195 and pyxel.mouse_x - 20 <= ballx <= pyxel.mouse_x + 20:
# 暗黙的にpadの中心座標がマウスのx座標と同値であることを前提に動いている
speed += 1
score += 1
ballx = 100
bally = 0
padx = pyxel.mouse_x
これでも動くが、以下のほうが望ましい
code:python
# より良いパターン
padx = pyxel.mouse_x # 先にpadxの座標を最新化しておく
if bally >= 195 and padx - 20 <= ballx <= padx + 20: # 仕様通りボールとpadの位置関係で計算
speed += 1
score += 1
ballx = 100
bally = 0
例えば…
特定のアイテムを拾ったら、「マウスの位置とpadの位置がズレる」といった要素を付け加えたくなったら?
padxの場所は実質マウスのx座標と同義だが、意味論としてはあくまで「padとボールの接触」です
音を鳴らす (pyxel.play(0, 0)
点数を表示する (pyxel.text)
第5回授業 : リスト
https://gyazo.com/d645d5556a3873ab26c9b079b2368fd4
普通に遊べるゲームが出来ます
課題
課題範囲
必須課題:B-10-1,2,3
任意課題:B-10-4
※いつもと違い☆☆☆☆までが必須になっています
提出期限
11/07(日) 23:59
併せて皆様 12/22(水) をミニプロの中間発表日とします
上記までに「企画」および「プロトタイプのコード」を各自用意し、1人5分ほどグループ内で発表できるよう準備を進めてください
基本設計書、詳細設計書はこの次点では任意としますが、「企画書」および「動くコード」は必須内容とします
このタイミングで相互フィードバック(これも成績評価対象です) を実施しますので、必ず参加できるように調整をしておくこと